/*
 * File:   lib surport.h
 * Author: aple
 */

#ifndef __LIB_SURPORT_H_H_
#define __LIB_SURPORT_H_H_

#include "stdint.h"
#include "stdlib.h"

#ifdef __cplusplus
extern "C"
{
#endif

	/*****************************************************************************
	 * @brief   全局支持变量
	 *****************************************************************************/
	extern volatile uint16_t lib_tick16_cnt; // 应当在ISR中递增，单位ms
	extern volatile uint32_t lib_tick32_cnt; // 应当在ISR中递增，单位ms
	extern volatile uint16_t cpu_freq_mhz;

	/*****************************************************************************
	 * @brief   需要外部实现的接口
	 *****************************************************************************/
	void lib_delay_0_5us(uint16_t u0_5us);
	void lib_delay_us(uint16_t us);
	void lib_delay_ms(uint16_t us);
	void *lib_malloc(size_t size);
	void lib_free(void *);

	/*****************************************************************************
	 * @brief   信息查询接口
	 *****************************************************************************/
	int32_t lib_chk_get(void); // check st last
	int32_t lib_chk_err_type(void);
	int32_t lib_chk_test(void);
	void lib_flag_update(void);

/*****************************************************************************
 * @brief  lib dev check
 *****************************************************************************/
#define DEV_ERR_NONE 0
#define DEV_ERR_LIMIT_AMOUNT 1
#define DEV_ERR_LRC 2
#define DEV_ERR_NLRC 3
#define DEV_ERR_CPUID 4
#define DEV_ERR_SRC1 5
#define DEV_ERR_SRC2 6
#define DEV_ERR_SUM 7
#define DEV_ERR_ROM_SIZE 8
#define DEV_ERR_ICTYPE 10
#define DEV_ERR_DIV 12
#define DEV_ERR_CRC 13

#define DEV_ERR_CLOCK1 20
#define DEV_ERR_CLOCK2 21
#define DEV_ERR_CLOCK3 22
#define DEV_ERR_CLOCK4 23
#define DEV_ERR_CLOCK5 24
#define DEV_ERR_CLOCK6 25
#define DEV_ERR_CLOCK7 26
#define DEV_ERR_CLOCK8 27
#define DEV_ERR_CLOCK9 28
#define DEV_ERR_CLOCK10 29

#define DEV_ERR_PORT1 30
#define DEV_ERR_PORT2 31
#define DEV_ERR_PORT3 32
#define DEV_ERR_PORT4 33
#define DEV_ERR_PORT5 34
#define DEV_ERR_PORT6 35
#define DEV_ERR_PORT7 36
#define DEV_ERR_PORT8 37
#define DEV_ERR_PORT9 38
#define DEV_ERR_PORT10 39

#define DEV_ERR_REG1 40
#define DEV_ERR_REG2 41
#define DEV_ERR_REG3 42
#define DEV_ERR_REG4 43
#define DEV_ERR_REG5 44
#define DEV_ERR_REG6 45
#define DEV_ERR_REG7 46
#define DEV_ERR_REG8 47
#define DEV_ERR_REG9 48
#define DEV_ERR_REG10 49

#ifdef __cplusplus
}
#endif

#endif /* __LIB_SURPORT_H_H_ */
